<?php
/**
 * Classe de autenticação
 *
 * Verifica a existência de um usuário no sistema. Por ser uma classe
 * abstrata necessita ser extendida para ser utilizada. Pode ser extendida
 * para autenticação por variável, por banco de dados, entre outras opções
 * desejáveis.
 *
 * @package		JBBN-PHP-LIB
 * @category	Libraries
 * @subpackage	Authentication
 * @author		João BBN <joaobbn@gmail.com>
 * @copyright	2012 João BBN
 * @license		http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
 * @version		Release: 0.1
 * @link		...
 * @see			AuthByVar,AuthByDatabase
 */
abstract class Auth {
	protected $user = FALSE;
	protected $pass = FALSE;
	protected $valid = FALSE;
	protected $userData = array();
	
	public function __construct ($params=FALSE) {
		# parent::__construct();
		if ($params)
			$this->setAuthData ($params);
	}
	
	public function setAuthData ($params) {
		list($this->user,$this->pass) = $params;
		$this->pass = $this->_encrypt($this->pass);
	}
	
	public function setUserData ($params) {
		$this->userData = $params;
	}
	
	public function getUserData () {
		// return an array with user data
		return $this->userData;
	}
	
	protected function _do_validation () {
		$this->valid = FALSE;
	}
	
	protected function _encrypt () {
		return md5($this->pass);
	}
	
	public function is_valid () {
		$this->_do_validation();
		
		return $this->valid;
	}
}
/*
# usage example
$params = array($user,$pass);

$user = new AuthByVar();
$user->setAuthData($params);
if ($user->is_valid())
	$userData = $this->getUserData();
